home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1994 November / macformat-018.iso / Utility Spectacular / Text / Emacs-1.12d folder / lisp / mac / menus.el < prev    next >
Encoding:
Text File  |  1993-12-29  |  5.7 KB  |  188 lines  |  [TEXT/EMAC]

  1. ;;;
  2. ;;; This file is part of a Macintosh port of GNU Emacs.
  3. ;;; Copyright (C) 1993 Marc Parmet.  All rights reserved.
  4. ;;;
  5. ;;; Default menu initialization
  6. ;;;
  7. ;;; Create the menus.  Menus may already have been inserted by the
  8. ;;; .emacs file, so we have to insert these in front of those.  This
  9. ;;; is why we insert in reverse order, each one in front of all those
  10. ;;; inserted previously.
  11. ;;;
  12.  
  13. ;;; This variable can be overridden in .emacs
  14. (defvar fixed-width-fonts '("Courier" "Monaco"))
  15.  
  16. (defvar font-menu (NewMenu 132 ""))
  17. (mapcar (function (lambda (font-name)
  18.             (AppendMenu font-menu font-name 'do-font)))
  19.     fixed-width-fonts)
  20. (InsertMenu font-menu -1)
  21.  
  22. (defun check-monaco (fonts i)
  23.   (cond
  24.    ((null fonts)
  25.     0)
  26.    ((string-equal (car fonts) "Monaco")
  27.     (CheckItem font-menu i 1)
  28.     i)
  29.    (t
  30.     (check-monaco (cdr fonts) (1+ i)))))
  31.  
  32. (defvar last-font-menu-check (check-monaco fixed-width-fonts 1))
  33.  
  34. (defvar fontsize-menu (NewMenu 133 ""))
  35. (AppendMenu fontsize-menu "9"  'do-font-size)
  36. (AppendMenu fontsize-menu "10" 'do-font-size)
  37. (AppendMenu fontsize-menu "12" 'do-font-size)
  38. (AppendMenu fontsize-menu "14" 'do-font-size)
  39. (AppendMenu fontsize-menu "18" 'do-font-size)
  40. (AppendMenu fontsize-menu "24" 'do-font-size)
  41. (AppendMenu fontsize-menu "(-" nil)
  42. (AppendMenu fontsize-menu "Other..." 'do-font-size-other)
  43. (InsertMenu fontsize-menu -1)
  44. (CheckItem fontsize-menu 1 1)
  45. (defvar last-fontsize-menu-check 1)
  46.  
  47. (defvar special-menu (NewMenu 131 "Special"))
  48. (AppendMenu special-menu "Show stdout-stderr" 'special-menu-show-stdout)
  49. (AppendMenu special-menu "Change stack size..." 'special-menu-change-stack-size)
  50. (AppendMenu special-menu "Option is meta" 'do-option-is-meta)
  51. (CheckItem special-menu 3 (if option-is-meta 1 0))
  52. (AppendMenu special-menu "(-" nil)
  53. (AppendMenu special-menu "Font/\033" nil)
  54. (AppendMenu special-menu "Font size/\033" nil)
  55. (SetItemMark special-menu 5 132)
  56. (SetItemMark special-menu 6 133)
  57. (InsertMenu special-menu t)
  58.  
  59. (defvar edit-menu (NewMenu 130 "Edit"))
  60. (AppendMenu edit-menu "Undo/Z" 'do-undo)
  61. (AppendMenu edit-menu "(-" nil)
  62. (AppendMenu edit-menu "Cut/X" 'do-cut)
  63. (AppendMenu edit-menu "Copy/C" 'do-copy)
  64. (AppendMenu edit-menu "Paste/V" 'do-paste)
  65. (AppendMenu edit-menu "Clear" 'do-clear)
  66. (InsertMenu edit-menu t)
  67.  
  68. (defvar file-menu (NewMenu 129 "File"))
  69. (AppendMenu file-menu "New/N" 'do-new)
  70. (AppendMenu file-menu "Open.../O" 'do-open)
  71. (AppendMenu file-menu "Close/W" 'do-close)
  72. (AppendMenu file-menu "Save/S" 'do-save)
  73. (AppendMenu file-menu "Save as..." 'do-save-as)
  74. (AppendMenu file-menu "(-" nil)
  75. (AppendMenu file-menu "Print buffer/P" 'do-print-buffer)
  76. (AppendMenu file-menu "Print file from disk..." 'do-print-file)
  77. (AppendMenu file-menu "(-" nil)
  78. (AppendMenu file-menu "Kill Emacs" 'file-menu-kill)
  79. (AppendMenu file-menu "Quit/Q" 'do-quit)
  80. (InsertMenu file-menu t)
  81.  
  82. (defvar apple-menu (NewMenu 128 "\024"))
  83. (AppendMenu apple-menu "About Emacs..." 'apple-menu-about)
  84. (AddResMenu apple-menu "DRVR")
  85. (InsertMenu apple-menu t)
  86. (DrawMenuBar)
  87.  
  88. ;;; Functions to be called in response to the selection of menu items
  89.  
  90. (defun do-new (menu item)
  91.   (let ((buffer (generate-new-buffer "untitled")))
  92.     (switch-to-buffer buffer)))
  93.  
  94. (defun do-open (menu item)
  95.   (let ((file-name (GetFile)))
  96.     (if file-name
  97.         (find-file file-name))))
  98.  
  99. (defun do-close (menu item)
  100.   (if (buffer-modified-p)
  101.       (if (y-or-n-p (concat "Save " (buffer-name) " before closing? "))
  102.       (save-buffer)))
  103.   (kill-buffer (current-buffer)))
  104.  
  105. (defun do-save (menu item)
  106.   (if (buffer-file-name (current-buffer))
  107.       (save-buffer)
  108.     (do-save-as 0 0)))
  109.  
  110. (defun do-save-as (menu item)
  111.   (let ((file-name (PutFile "Save file as:" (buffer-name))))
  112.     (if file-name
  113.     (write-file file-name))))
  114.  
  115. (defun do-print-buffer (menu item)
  116.   (print-buffer))
  117.  
  118. (defun do-print-file (menu item)
  119.   (let ((file-name (GetFile)))
  120.     (if file-name
  121.     (call-process "lpr" nil 0 nil file-name))))
  122.  
  123. (defun do-quit (menu item)
  124.   (save-buffers-kill-emacs))
  125.  
  126. (defun do-undo (menu item)
  127.   (undo)
  128.   (setq last-command 'undo))
  129.  
  130. (defun do-cut (menu item)
  131.   (save-excursion (copy-region-to-clipboard))
  132.   (kill-region (point) (mark)))
  133.  
  134. (defun do-copy (menu item)
  135.   (save-excursion (copy-region-to-clipboard))
  136.   (copy-region-as-kill (point) (mark)))
  137.  
  138. (defun do-paste (menu item)
  139.   (insert-buffer-substring (save-excursion (make-clipboard-current))))
  140.  
  141. (defun do-clear (menu item)
  142.   (delete-region (point) (mark)))
  143.  
  144. (defun do-option-is-meta (menu item)
  145.   (setq option-is-meta (not option-is-meta))
  146.   (CheckItem special-menu 3 (if option-is-meta 1 0)))
  147.  
  148. (defun do-font-size-other-internal (size)
  149.   (interactive "nPoint size: ")
  150.   (if (or (>= size 128) (<= size 0))
  151.       (message "You can't be serious!")
  152.     (special-menu-font-change nil size)))
  153.  
  154. (defun do-font-size-other (menu item)
  155.   (call-interactively 'do-font-size-other-internal nil)
  156.   (CheckItem fontsize-menu last-fontsize-menu-check 0)
  157.   (setq last-fontsize-menu-check item)
  158.   (CheckItem fontsize-menu item 1))
  159.  
  160. (defun do-font-size (menu item)
  161.   (let ((s (make-string 256 0)))
  162.     (GetItem fontsize-menu item s)
  163.     (CheckItem fontsize-menu last-fontsize-menu-check 0)
  164.     (setq last-fontsize-menu-check item)
  165.     (CheckItem fontsize-menu item 1)
  166.     (special-menu-font-change nil (string-to-int (PtoCstr s)))))
  167.  
  168. (defun do-font (menu item)
  169.   (let ((s (make-string 256 0)))
  170.     (GetItem font-menu item s)
  171.     (CheckItem font-menu last-font-menu-check 0)
  172.     (setq last-font-menu-check item)
  173.     (CheckItem font-menu item 1)
  174.     (special-menu-font-change (PtoCstr s) -1)))
  175.  
  176. (defun do-menu (menu item)
  177.   (let* ((menu-handle (GetMHandle menu))
  178.          (callback (assoc (cons menu-handle item) mac-menu-callback-list)))
  179.     (cond
  180.      (callback
  181.         (funcall (cdr callback) menu-handle item))
  182.      ((= menu-handle apple-menu)
  183.           (let ((s (make-string 256 0)))
  184.             (GetItem apple-menu item s)
  185.             (OpenDeskAcc (PtoCstr s))))
  186.      (t
  187.       nil))))
  188.